#pragma once
#include "cybertron/sensor/noise/TimeNoise.hpp"
#include <chrono>

CYBERTRON_BEGIN

class LinearTimeNoise : public TimeNoise
{
public:
	LinearTimeNoise(float weight = 1e7); // 1m linear bias for weight seconds for continuous running.
	LinearTimeNoise(float horizontalWeight, float verticalWeight);
	LinearTimeNoise(const vec3& weight);
	virtual ~LinearTimeNoise();

	void drift(float rotation);

	vec3 update() override;
	void resetNoise() override;

protected:
	vec3	m_initWeight;
	vec3	m_weight;
	vec3	m_bias;
};

CYBERTRON_END